<?php


namespace Hj212\pack;


use mysql_xdevapi\Exception;



class Packet
{
    // 包头 2
    const HEADER = "##";

    //包尾
    const FOOTER = "\r\n";

    // 精确到毫秒的时间戳:QN=YYYYMMDDhhmmsszzz，用来唯一标识一次命令交互 20
    private  $qn;

    //系统编码 20
    private  $st;

    //命令编码
    private  $cn;

    // 访问密码 9
    private $pw;

    //设备唯一标志mn 27
    //长度比特 标头8 + 厂商识别代码28 +  对象分类代码24  + 序列号36
    private $mn;


    private $flag;

    //指令参数cp
    private $cp;

    //总包数 PNUM  不分包时可以没有本字段，与标志位有关
    private $pnum;

    //包号 PNO   指示当前数据包的包号  分包时可以没有本字段，与标志位有关
    private $pno;

    // 数据段长度 4
    private $length;

    // 数据段 1024
    private $segment;

    // crc校验 4
    private $crc;

    //数据字符串
    private $dataStr;

    public function __construct(Array $data)
    {
        if(!isset($data['qn'])||!isset($data['st'])){
            throw new Exception("缺少初始化必要字段");
        }
    }

    /**
     * @return int
     */
    public function getLength()
    {
        return $this->length;
    }

    /**
     * @return bool|string
     */
    public function getSegment()
    {
        return $this->segment;
    }

    /**
     * @return bool|string
     */
    public function getCrc()
    {
        return $this->crc;
    }

    /**
     * 返回数据数组
     * @return array
     */
    public function getDataArr()
    {

    }

    private function verifyData()
    {

    }


    public function  getPacket()
    {
        $packetStr = "";
    }

}